using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NCT.Framework;

namespace VISS.API.Users {

    /// <summary>
    /// Status value of User Report
    /// </summary>
    public enum EUserReportStatus : short {
        /// <summary>
        /// 
        /// </summary>
        Unknown = -1,
        /// <summary>
        /// 
        /// </summary>
        UnRead = 0,
        /// <summary>
        /// 
        /// </summary>
        Deleted = 1
    }

    /// <summary>
    /// Contain info about user report
    /// </summary>
    [Serializable]
	public class UserReportEnt {

		#region Properties

        /// <summary>
        /// Gets or sets the ID.
        /// </summary>
        /// <value>The ID.</value>
		public long ID { get; set; }
        /// <summary>
        /// Gets or sets the user key.
        /// </summary>
        /// <value>The user key.</value>
		public string UserKey { get; set; }
        /// <summary>
        /// Gets or sets the reported user key.
        /// </summary>
        /// <value>The reported user key.</value>
		public string ReportedUserKey { get; set; }
        /// <summary>
        /// Gets or sets the reason.
        /// </summary>
        /// <value>The reason.</value>
		public string Reason { get; set; }
        /// <summary>
        /// Gets or sets the status.
        /// </summary>
        /// <value>The status.</value>
		public EUserReportStatus Status { get; set; }
        /// <summary>
        /// Gets or sets the date created.
        /// </summary>
        /// <value>The date created.</value>
		public DateTime DateCreated { get; set; }

        /// <summary>
        /// This field is only used for display extra data.
        /// </summary>
        public string ReporterName { get; set; }
        /// <summary>
        /// This field is only used for display extra data.
        /// </summary>
        public string ReportedName { get; set; }

		#endregion

		#region Constructors

        /// <summary>
        /// Initializes a new instance of the <see cref="UserReportEnt"/> class.
        /// </summary>
		public UserReportEnt() {
			ID = 0;
			UserKey = string.Empty;
			ReportedUserKey = string.Empty;
			Reason = string.Empty;
			Status = EUserReportStatus.Unknown;
			DateCreated = DateTimeUtils.MinValue;
            ReporterName = string.Empty;
            ReportedName = string.Empty;
		}

		#endregion
	}
}